“Cloud computing” can be defined as Internet-based computing in which shared resources, software and information are provided to client or user computers or other devices on-demand from a pool of resources that are communicatively available via the Internet, or other electronic network. Cloud computing is envisioned as a way to democratize access to resources and services, letting users efficiently purchase as many resources as they need and/or can afford.
In some possible implementations, cloud computing comprises dynamically linking backend resources (e.g., memory, processors, etc.) to provide web-based services, applications, and data storage on-demand via a cloud computing network. This approach has the potential effect of providing services at lower cost than current options, and with less complexity, greater scalability, and wider reach. However, keeping track of the potentially thousands of compute and associated devices (switches, firewalls, etc.) as services are brought up and torn down on those compute devices can be daunting. Indeed, network management of cloud computing systems currently rely on orchestration tools that learn about cloud elements within a given Data Center, make all placement decisions for all cloud elements within the Data Center, and render and provision the cloud service request by communicating directly with each cloud element in the Data Center. Keeping track of such a dynamic environment is a significant challenge, especially as demand for cloud computing services continues to increase.